Manufacturers of software applications use various methods of managing their customers' access to their software based on the presence and nature of a valid customer software license. Software-based methods involve periodic communication between the client system running the application and a remote server that checks to see whether the client has a valid license to the software. If the remote server determines that a license is in effect, the functionality corresponding to that license is enabled. Conversely, if a license is not in effect, some or all of the application's functionality is disabled, or remains deactivated on the client. The license may be tied to a particular client system, or to a particular user. User-based licensing has the advantage of enabling a user to access the application from more than one client system. Such software-based methods require a connection to the remote server that stores the licensing information. This can pose a problem for applications running on clients with no Internet or other remote connection, a situation that commonly arises for clients requiring a high degree of network security.
Another popular license management method is based on the use of a hardware key. A hardware key is a small device, such as a flash memory stick, that permits a software application on a client to run when it is plugged into the client. Hardware keys have the advantage of portability and transferability, enabling any user in possession of the key to run the licensed application on any client that has the requisite software loaded onto it, while still enabling the manufacturer to limit the license to a single active instance of the software application. Hardware keys can be inconvenient, however, when users lose or damage them, with attendant delays before receiving a replacement.